# 存取款管理系统
# 1.人员信息数据源
# 2.欢迎界面
# 3.登陆界面
# 4.余额查询
# 5.自助取款
# 6.自助存款
# 7.修改密码
# 8.退出系统
# 9.界面和交互

# #1.人员信息数据源
list1_username = []
list2_password = []

Account = [
    {'name':'Lucy','Password':'123456','Balance':200,},
    {'name':'Lily','Password':'123123','Balance':185,},
    {'name':'Tom','Password':'456456','Balance':160,},
    {'name':'123','Password':'123456','Balance':160}]

#2.欢迎界面
def Welcome():
    print('*'*28,'欢迎使用21世纪自助银行系统','*'*28)
    print('''
                             1.登陆账号
                             2.注册账号
                             3.退出系统
    ''')
    #下面这样写太麻烦
    # print('{} {:<20} {} {} {:<20} {} {} {:<20}'.format('   '*9,'1.登陆账号','\n','   '*9, '2.注册账号','\n','   '*9,'3.退出系统'))
    print('*' * 34, '感谢您的光临', '*' * 34)
#测试2.欢迎界面
#Welcome()

#3.登陆界面
def Login():
    k = 3
    while k:
        # Function()
        global i
        Account_Info()
        username = input('请输入您的姓名:')
        password = input('请输入您的密码:')
        if username in list1_username and password in list2_password:
            for i in Account:
                if username == i['name'] and password == i['Password']:      # 遍历出来的用户名和密码在列表中，执行
                    judge2()
        else:
            print('用户名和密码不匹配，请重新输入！')
            k-=1
            if k == 1:
                print('用户名和密码已输错2次，再输错一个将返回主菜单')
                # break
            elif k == 0:
                print('用户名或密码输入错误已达3次，系统自动返回主菜单，请30分钟后再尝试！')
                judge1()

#测试登录界面
# Login()

#4. 余额查询
def Enquiry_Balance():
    print('您的账号余额为：%d' %i['Balance'])
    # input('>>按确定键继续为您服务<<')
#测试查询余额
# Enquiry_Balance

#5.自助取款
def Withdraw_Balance():
    sum = int(input('请输入您的取款金额:'))
    if  i['Balance'] - sum >=0:
        balance = i['Balance'] - sum
        dict1 = {'Balance':balance}
        i.update(dict1)
        print('恭喜你取款成功，取款金额为：%d，账户余额为：%d' % (sum, balance))
    else:
        print('您的账户余额不足！')
#测试自助取款
# Withdraw_Balance

#6. 自助存款
def Add_Balance():
    sum = int(input('请输入您的存款金额:'))
    total = i['Balance'] + sum
    dict2 = {'Balance':total}
    i.update(dict2)
    print('恭喜你存款成功，存款金额为：%d，账户余额为：%d' % (sum, total))
#测试自助存款
# Add_Balance

#7. 修改密码
def Reset_Password():
    password = input('请输入6位原密码：')
    if password == i['Password']:  # 密码与原密码一致，执行
        while True:
            new_password1 = input('请输入6位新密码：')
            new_password2 = input('请再次输入6位新密码：')
            if new_password1 == '' and new_password2 == '':
                print('密码不能为空，请重新输入!')
                continue
            # 如果数字密码是6位一致的密码，执行
            elif new_password1 == new_password2 and (len(new_password2) == 6 and new_password2.isdigit()):
                dict2 = {'Password': new_password2}
                i.update(dict2)
                print('恭喜您，密码修改成功！')
                Login()
            # 如果数字密码不是6位一致的密码，执行
            elif new_password1 == new_password2 and (len(new_password2) != 6 or new_password2.isdigit()):
                print('''
                                密码长度输入错误，请输入6位有效数字密码！
                                按返回键0进入主菜单，不再继续修改密码。
                ''')
                verify = input('请选择返回键0或者按确定键重新输入密码：')
                if  verify == '0':
                    Function()
                    break
                else:
                    continue
            # 如果不是数字密码，执行
            elif new_password1 == new_password2 and (len(new_password2) == 6 or new_password2.isdigit()):
                print('''
                                密码输入错误，请输入6位有效数字密码！
                                按返回键0进入主菜单，不再继续修改密码。
                ''')
                verify = input('请选择返回键0或者按确定键重新输入密码 ：')
                if  verify == '0':
                    Function()
                    break
                else:
                    continue
                # continue
            # 判断两次密码输入是否一致，不一致重新输入
            elif new_password1 != new_password2:
                print('''
                                两次输入密码不一致，请重新输入6位有效数字密码！
                                按返回键0进入主菜单，不再继续修改密码。
                ''')
                verify = input('请选择返回键0或者按确定键重新输入密码：')
                if  verify == '0':
                    Function()
                    break
                else:
                    continue
    # 输入密码与原密码不一致，执行
    else:
        password != i['Password']
        print('原密码输入错误，请重新输入！')
        Reset_Password()                              # 递归执行密码输入


#测试修改密码
# Reset_Password()


#8.注册账号
def Registered():
    # while True:
    #     # 设置新用户名添加到用户库
    #     while True:
    #         new_name = input('请输入您的用户名234：')
    #         if new_name in list1_username:
    #             print('用户名已存在，请重新输入！')
    #         elif new_name == '':
    #             print('用户名不能为空，请重新输入！')
    #         else:
    #             new_user = {'name': new_name}
    #             Account.append(new_user)
    #             break
    #     # 设置新用户名的登陆密码添加到用户库
    #     while True:
    #         new_password1 = input('请输入您的6位数字密码：')
    #         if new_password1 == '':
    #             print('''
    #                              密码不能为空，请重新输入！
    #                              按返回键0进入欢迎界面，按确定键重新输入密码。
    #              ''')
    #             verify = input('请选择返回键0或者按确定键重新输入密码 ：')
    #             if  verify == '0':
    #                 Welcome()
    #                 break
    #             else:
    #                 continue
    #         new_password2 = input('请再次输入您的6位数字密码：')
    #         if new_password2 == new_password1:
    #             new_user['Password'] = new_password2
    #             print('***恭喜您，新账户注册成功！***')
    #             break
    #         elif new_password2 != new_password1:
    #             print('''
    #                             两次输入密码不一致，请重新输入！
    #                             按返回键0进入欢迎界面，按确定键重新输入密码。
    #             ''')
    #             verify = input('请选择返回键0或者按确定键重新输入密码 ：')
    #             if  verify == '0':
    #                 Welcome()
    #                 break
    #             else:
    #                 continue
    #         # 新用户预存金额
    #         select = input('是否需要预存金额，需要请输入“1”后按确认键：')
    #         if select == '1':
    #             new_balance = int(input('请输入您预存金额：'))
    #             new_user['Balance'] = new_balance
    #             print('预存款成功！存款金额为：%d' % new_balance)
    #             input('>>按确定键返回主菜单<<')
    #             break
    #         else:
    #             input('>>按确定键返回主菜单<<')
    #             break
    #         break
    #     break



    print('''
                    程序员正在加紧开发中······
                       敬请期待（上面有待继续完善）''')
#测试注册新用户
# Registered()

#10.退出系统
def Exit_System():
    exit()


def Account_Info():
    global username
    global password
    # global list1_username
    for j in range(len(Account)):
        all_username = Account[j]['name']
        list1_username.append(all_username)  # 将遍历出来的用户存到列表
        all_password = Account[j]['Password']
        list2_password.append(all_password)  # 将遍历出来的密码存到列表
#Account_Info()

#定义功能界面列表
def Function():
    print('*'*28,'欢迎使用21世纪自助银行系统','*'*28)
    print('''
                          1.查询余额          2.自助取款 
                          3.自助存款          4.修改密码        
                          5.回主菜单          6.退出系统
    ''')
    #太麻烦
    # print('{:5} {:20} {:20} {:20}'.format('  '*10,'1.查询余额','2.存款','3.取款'))
    # print('{:5} {:20} {:20}'.format('  '*10, '4.修改密码 ','5.回主菜单', '6.退出系统'))
    print('*' * 34, '感谢您的光临', '*' *34)
#测试登陆界面
# Function()

#用户登陆界面选择函数
def judge1():
    while True:
        Welcome()
        judge1_1 = input('请选择您的业务：')
        if judge1_1 == '1':
            Login()
        elif judge1_1 == '2':
            Registered()
        elif judge1_1 == '3':
            Exit_System()
        else:
            print('您输入有误，请重新输入')

#定义功能界面选择函数
def judge2():
    while True:
        Function()
        judge2_1 = input('请选择您所需要办理的业务:')
        if judge2_1 == '1':
            Enquiry_Balance()
            input('>>按确定键继续为您服务<<')
        elif judge2_1 == '2':
            Withdraw_Balance()
            input('请按确定键继续为您服务')
        elif judge2_1 == '3':
            Add_Balance()
            input('>>按确定键继续为您服务<<')
        elif judge2_1 == '4':
            Reset_Password()
            input('>>按确定键继续为您服务<<')
        elif judge2_1 == '5':
            judge1()
        elif judge2_1 == '6':
            print('感谢您的使用，欢迎再次光临！')
            input('>>按确定键继续为您服务<<')
            Exit_System()
        else:
            print('请输入选项中的有效数字!')
            input('>>按确定键继续为您服务<<')


while True:
    judge1()


